﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace Cafe_htc
{
    public partial class QuanLyBangGia : Form
    {
        public QuanLyBangGia()
        {
            InitializeComponent();
        }

        private void HienThiDanhSachMon()
        {
            dgvMenu.Rows.Clear();
            List<MonDTO> dsMon = MonBUS.LayDanhSachMon();
            int count = dsMon.Count;

            for (int i = 0; i < count; ++i)
            {
                dgvMenu.Rows.Add(dsMon[i].TenMon, dsMon[i].NhomMon);
            }

            tbxTenMon.Text = "";
            tbxNhom.Text = "";
            tbxDonViTinh.Text = "";
            tbxGia.Text = "";
        }

        private void QuanLyBangGia_Load(object sender, EventArgs e)
        {
            // check radiobutton Xóa Món...
            rbtnXoaMon.Checked = true;
            rbtnXoaMon_CheckedChanged(sender, e);

            // Hiển thị danh sách món vào bảng...  
            HienThiDanhSachMon();
        }

        private void dgvMenu_SelectionChanged(object sender, EventArgs e)
        {
            if (rbtnThemMon.Checked == false)
            {
                MonDTO mon = MonBUS.LayThongTinMon(dgvMenu.CurrentRow.Cells[0].Value.ToString());
                if (mon != null)
                {
                    tbxTenMon.Text = mon.TenMon;
                    tbxNhom.Text = mon.NhomMon;
                    tbxDonViTinh.Text = mon.DonViTinh;
                    tbxGia.Text = mon.Gia.ToString();
                }
            }
        }

        private void rbtnThemMon_CheckedChanged(object sender, EventArgs e)
        {
            // Cho phép người dùng nhập thông tin món...
            tbxTenMon.ReadOnly = false;
            tbxNhom.ReadOnly = false;
            tbxDonViTinh.ReadOnly = false;
            tbxGia.ReadOnly = false;

            tbxTenMon.Text = "";
            tbxNhom.Text = "";
            tbxDonViTinh.Text = "";
            tbxGia.Text = "";

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Nhập đầy đủ thông tin món vào bảng Thông Tin Món." + "\r\n\r\n" + "* Bước 2: Bấm nút Chấp Nhận để thêm món này vào Menu.";

            // Hiển thị button Help...
            btnHelp.Visible = true;
        }

        private void rbtnXoaMon_CheckedChanged(object sender, EventArgs e)
        {
            // Chỉ cho người dùng xem thông tin, không cho người dùng chỉnh sửa...
            tbxTenMon.ReadOnly = true;
            tbxNhom.ReadOnly = true;
            tbxDonViTinh.ReadOnly = true;
            tbxGia.ReadOnly = true;

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Chọn món mà bạn muốn xóa ở bảng Menu. Thông tin của món này sẽ được hiển thị ở bảng Thông Tin Món." + "\r\n\r\n" + "* Bước 2: Bấm nút Chấp Nhận để xóa.";

            // Ẩn button Help...
            btnHelp.Visible = false;
        }

        private void rbtnCapNhat_CheckedChanged(object sender, EventArgs e)
        {
            // Cho phép người dùng chỉnh sửa thông tin sản phẩm...
            tbxTenMon.ReadOnly = false;
            tbxNhom.ReadOnly = false;
            tbxDonViTinh.ReadOnly = false;
            tbxGia.ReadOnly = false;

            // Hướng dẫn:
            tbxHuongDan.Text = "* Bước 1: Chọn món mà bạn muốn cập nhật lại ở bảng Menu. Thông tin của món này sẽ được hiển thị ở bảng Thông Tin Món." + "\r\n\r\n" + "* Bước 2: Sau khi chỉnh sửa xong thông tin, bạn bấm nút Chấp Nhận để cập nhật lại.";

            // Ẩn button Help...
            btnHelp.Visible = false;
        }

        private void btnChapNhan_Click(object sender, EventArgs e)
        {
            int i = 0;
            int index = 0;

            string strtemp = tbxTenMon.Text.ToString();
            if (strtemp == "")
            {
                MessageBox.Show("Tên món không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                int lentemp = strtemp.Length;

                if (lentemp > 50 || lentemp < 1)
                {
                    MessageBox.Show("Tên món là chuỗi gồm 1-50 ký tự.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    tbxTenMon.Text = "";
                }
                else
                {
                    i = 0;
                    index = 0;

                    strtemp = tbxNhom.Text.ToString();
                    if (strtemp == "")
                    {
                        MessageBox.Show("Nhóm món không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        lentemp = strtemp.Length;

                        if (lentemp > 50 || lentemp < 1)
                        {
                            MessageBox.Show("Nhóm món là chuỗi gồm 1-50 ký tự.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            tbxNhom.Text = "";
                        }
                        else
                        {
                            i = 0;
                            index = 0;

                            strtemp = tbxDonViTinh.Text.ToString();
                            if (strtemp == "")
                            {
                                MessageBox.Show("Đơn Vị Tính không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                lentemp = strtemp.Length;

                                if (lentemp > 50 || lentemp < 1)
                                {
                                    MessageBox.Show("Đơn vị tính là chuỗi gồm 1-50 ký tự.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                    tbxDonViTinh.Text = "";
                                }
                                else
                                {
                                    i = 0;
                                    index = 0;

                                    strtemp = tbxGia.Text.ToString();
                                    if (strtemp == "")
                                    {
                                        MessageBox.Show("Giá không được để trống...", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    else
                                    {
                                        lentemp = strtemp.Length;
                                        do
                                        {
                                            int a = (int)strtemp[i];
                                            if (a < 48 || a > 57)
                                                index = 1;

                                            ++i;
                                        }
                                        while (index == 0 && i < lentemp);

                                        if (i < lentemp)
                                        {
                                            MessageBox.Show("Giá: là số tự nhiên, đơn vị tính là đồng.", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                            tbxGia .Text = "";
                                        }
                                        else
                                        {

                                            if (rbtnThemMon.Checked == true)
                                            {
                                                // Khi radiobutton Thêm Món được chọn...
                                                MonDTO mon = new MonDTO();
                                                mon.TenMon = tbxTenMon.Text.Trim();
                                                mon.NhomMon = tbxNhom.Text.Trim();
                                                mon.DonViTinh = tbxDonViTinh.Text.Trim();
                                                mon.Gia = long.Parse(tbxGia.Text.Trim());

                                                if (MonBUS.ThemMon(mon))
                                                {
                                                    MessageBox.Show("Đã thêm thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                                    // Cập nhật lại danh sách món trong bảng Menu...
                                                    HienThiDanhSachMon();

                                                    tbxTenMon.Text = "";
                                                    tbxNhom.Text = "";
                                                    tbxDonViTinh.Text = "";
                                                    tbxGia.Text = "";
                                                }
                                                else
                                                    MessageBox.Show("Thêm không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);


                                            }
                                            else
                                            {
                                                if (rbtnXoaMon.Checked == true)
                                                {
                                                    // Khi radiobutton Xóa Món được chọn...
                                                    if (MessageBox.Show("Bạn có chắc chắn muốm xóa hay không?...", "Thông báo!...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                                    {
                                                        if (MonBUS.XoaMon(tbxTenMon.Text.Trim()))
                                                        {
                                                            MessageBox.Show("Đã xóa thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                                            // Cập nhật lại danh sách món trong bảng Menu...
                                                            HienThiDanhSachMon();

                                                            tbxTenMon.Text = "";
                                                            tbxNhom.Text = "";
                                                            tbxDonViTinh.Text = "";
                                                            tbxGia.Text = "";
                                                        }
                                                        else
                                                            MessageBox.Show("Xóa không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                    }
                                                }
                                                else
                                                {
                                                    // Khi radiobutton Cập Nhật được chọn...
                                                    MonDTO mon = MonBUS.LayThongTinMon(dgvMenu.CurrentRow.Cells[0].Value.ToString());
                                                    mon.TenMon = tbxTenMon.Text.Trim();
                                                    mon.NhomMon = tbxNhom.Text.Trim();
                                                    mon.DonViTinh = tbxDonViTinh.Text.Trim();
                                                    mon.Gia = long.Parse(tbxGia.Text.Trim());

                                                    if (MonBUS.SuaThongTinMon(mon))
                                                    {
                                                        MessageBox.Show("Đã cập nhật thành công...^_^", "Thông Báo!...", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                                        // Cập nhật lại danh sách món trong bảng Menu...
                                                        HienThiDanhSachMon();

                                                        tbxTenMon.Text = "";
                                                        tbxNhom.Text = "";
                                                        tbxDonViTinh.Text = "";
                                                        tbxGia.Text = "";
                                                    }
                                                    else
                                                        MessageBox.Show("Cập nhật không thành công...>.<", "Lỗi!...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        private void btnHelp_Click(object sender, EventArgs e)
        {
            tbxHuongDan.Text = "* Tên món, Nhóm, Đơn vị tính là chuỗi gồm 1-50 ký tự." + "\r\n\r\n" + "* Giá: là giá thành của món.";
        }

        private void btnXong_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
